#include "modbus_register.h"

// 自动制作模块变量
static uint8_t jam_ingredient_set[3] = {0};     // 果酱原料集合
static uint8_t topping_ingredient_set[3] = {0}; // 顶料原料集合
static uint16_t automatic_production = 0;        // 自动制作开关

// 生产模块寄存器读取
uint16_t modbus_production_get(uint16_t address) {
    // 果酱原料集合
    if (address >= REG_JAM_ING_SET_BASE && address < REG_JAM_ING_SET_BASE + 3) {
        return jam_ingredient_set[address - REG_JAM_ING_SET_BASE];
    }
    // 顶料原料集合
    else if (address >= REG_TOPPING_ING_SET_BASE && address < REG_TOPPING_ING_SET_BASE + 3) {
        return topping_ingredient_set[address - REG_TOPPING_ING_SET_BASE];
    }
    // 自动制作开关
    else if (address == REG_AUTO_PRODUCTION) {
        return automatic_production;
    }
    return 0;
}

// 生产模块寄存器写入
void modbus_production_set(uint16_t address, uint16_t value) {
    // 果酱原料集合
    if (address >= REG_JAM_ING_SET_BASE && address < REG_JAM_ING_SET_BASE + 3) {
        jam_ingredient_set[address - REG_JAM_ING_SET_BASE] = value;
    }
    // 顶料原料集合
    else if (address >= REG_TOPPING_ING_SET_BASE && address < REG_TOPPING_ING_SET_BASE + 3) {
        topping_ingredient_set[address - REG_TOPPING_ING_SET_BASE] = value;
    }
    // 自动制作开关
    else if (address == REG_AUTO_PRODUCTION) {
        automatic_production = value;
    }
}
